home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky02.ogg")
- local pokus = getRestartCount()
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.pocetrad = 0
- room.kdydalsi = random(200) + 200
- room.posluvod = random(5)
- room.konce = {}
-
- return function()
- if no_dialog() and isReady(small) and isReady(big) then
- if room.kdydalsi > 0 then
- room.kdydalsi = room.kdydalsi - 1
- end
- if room.kdydalsi == 0 then
- room.pocetrad = room.pocetrad + 1
- room.kdydalsi = (random(200) + 100) * (room.pocetrad + 2)
- pom1 = random(4)
- if pom1 == room.posluvod then
- pom1 = 4
- end
- room.posluvod = pom1
- vladce:planDialog(20, "dir-hs-uvod"..pom1)
- if countPairs(room.konce) < 9 then
- repeat
- pom1 = random(9)
- until not room.konce[pom1]
- else
- room.konce = {}
- pom1 = random(9)
- end
- room.konce[pom1] = true
- vladce:planDialog(0, "dir-hs-konec"..pom1)
- if room.pocetrad >= 5 then
- pom1 = random(6)
- else
- pom1 = random(room.pocetrad + 1)
- end
- adddel(random(10))
- if pom1 > 0 then
- switch(random(2)){
- [0] = function()
- addm(0, "dir-m-rada"..(pom1 - 1))
- end,
- [1] = function()
- addv(0, "dir-v-rada"..(pom1 - 1))
- end,
- }
- end
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_vladce()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- vladce.ksichty = 0
- vladce.faze = 0
-
- return function()
- vladce.afaze = vladce.afaze + 1
- local anim_table = {
- [0] = function()
- if vladce:isTalking() then
- vladce.ksichty = random(4) + 1
- end
- end,
- [1] = function()
- if math.mod(game_getCycles(), 2) == 0 then
- if vladce:isTalking() then
- pom1 = random(3)
- else
- pom1 = 3
- end
- switch(vladce.ksichty){
- [1] = function()
- switch(pom1){
- [0] = function()
- vladce.afaze = 1
- end,
- [1] = function()
- vladce.afaze = 15
- end,
- [2] = function()
- vladce.afaze = 18
- end,
- [3] = function()
- vladce.afaze = 1
- end,
- }
- end,
- [2] = function()
- switch(pom1){
- [0] = function()
- vladce.afaze = 4
- end,
- [1] = function()
- vladce.afaze = 16
- end,
- [2] = function()
- vladce.afaze = 20
- end,
- [3] = function()
- vladce.afaze = 1
- end,
- }
- end,
- [3] = function()
- switch(pom1){
- [0] = function()
- vladce.afaze = 14
- end,
- [1] = function()
- vladce.afaze = 17
- end,
- [2] = function()
- vladce.afaze = 19
- end,
- [3] = function()
- vladce.afaze = 14
- end,
- }
- end,
- [4] = function()
- switch(pom1){
- [0] = function()
- vladce.afaze = 6
- end,
- [1] = function()
- vladce.afaze = 15
- end,
- [2] = function()
- vladce.afaze = 18
- end,
- [3] = function()
- vladce.afaze = 11
- end,
- }
- end,
- }
- if pom1 == 3 then
- vladce.ksichty = 0
- end
- end
- end,
- [10] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [1] = function()
- vladce.afaze = 5
- end,
- [2] = function()
- vladce.afaze = 9
- end,
- [3] = function()
- vladce.afaze = 10
- end,
- [4] = function()
- vladce.ksichty = 0
- end,
- }
- end,
- [11] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [1] = function()
- vladce.afaze = 9
- end,
- [2] = function()
- vladce.afaze = 5
- end,
- [3] = function()
- vladce.afaze = 1
- end,
- [4] = function()
- vladce.ksichty = 0
- end,
- }
- end,
- [12] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [1] = function()
- vladce.afaze = 6
- end,
- [2] = function()
- vladce.afaze = 7
- end,
- [3] = function()
- vladce.afaze = 11
- end,
- [4] = function()
- vladce.ksichty = 0
- end,
- }
- end,
- [13] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [1] = function()
- vladce.afaze = 7
- end,
- [2] = function()
- vladce.afaze = 6
- end,
- [3] = function()
- vladce.afaze = 1
- end,
- [4] = function()
- vladce.ksichty = 0
- end,
- }
- end,
- [14] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [1] = function()
- vladce.afaze = 9
- end,
- [2] = function()
- vladce.afaze = 5
- end,
- [3] = function()
- vladce.afaze = 14
- end,
- [4] = function()
- vladce.ksichty = 0
- end,
- }
- end,
- [20] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [1] = function()
- vladce.afaze = 6
- end,
- [2] = function()
- vladce.afaze = 8
- end,
- [3] = function()
- vladce.afaze = 8
- end,
- [4] = function()
- vladce.afaze = 6
- end,
- [5] = function()
- vladce.ksichty = 0
- end,
- }
- end,
- [21] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [2] = function()
- vladce.afaze = 4
- end,
- [6] = function()
- vladce.ksichty = 0
- end,
- default = function()
- if isIn(vladce.faze, {1, 3, 5}) then
- vladce.afaze = 1
- end
- end,
- }
- end,
- [22] = function()
- vladce.faze = vladce.faze + 1
- switch(vladce.faze){
- [2] = function()
- vladce.afaze = 12
- end,
- [6] = function()
- vladce.ksichty = 0
- end,
- default = function()
- if isIn(vladce.faze, {1, 3, 5}) then
- vladce.afaze = 11
- end
- end,
- }
- end,
- }
-
- anim_table[2] = anim_table[1]
- anim_table[3] = anim_table[1]
- anim_table[4] = anim_table[1]
- switch(vladce.ksichty)(anim_table)
-
- vladce.afaze = vladce.afaze - 1
-
- vladce:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_xichtik()
- return function()
- if random(1000) < 5 then
- xichtik.afaze = random(3)
- end
-
- xichtik:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_chobot()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- chobot.lastdir = dir_no
- chobot.oci = 0
- chobot.chapadla = 0
- chobot.akcnost = 2
-
- return function()
- if chobot.dir ~= dir_no then
- chobot.akcnost = 7
- elseif chobot.akcnost > 2 and math.mod(game_getCycles(), 5) == 0 then
- chobot.akcnost = chobot.akcnost - 1
- end
- if chobot.dir ~= chobot.lastdir then
- if not chobot:isTalking() then
- if chobot.dir == dir_down then
- chobot:talk("k1-chob-p", VOLUME_FULL)
- elseif chobot.dir ~= dir_no then
- switch(random(3)){
- [0] = function()
- chobot:talk("k1-chob-1", VOLUME_FULL)
- end,
- [1] = function()
- chobot:talk("k1-chob-2", VOLUME_FULL)
- end,
- [2] = function()
- chobot:talk("k1-chob-3", VOLUME_FULL)
- end,
- }
- end
- end
- chobot.lastdir = chobot.dir
- end
- if chobot.dir == dir_no and math.mod(game_getCycles(), chobot.akcnost) == 0 then
- if random(2) == 0 then
- if chobot.chapadla < 2 then
- chobot.chapadla = chobot.chapadla + 1
- else
- chobot.chapadla = 0
- end
- else
- if chobot.chapadla > 0 then
- chobot.chapadla = chobot.chapadla - 1
- else
- chobot.chapadla = 2
- end
- end
- end
- pomb1 = xdist(small, chobot) == 0 and ydist(small, chobot) <= 0 and ydist(small, chobot) > -2 or xdist(big, chobot) == 0 and ydist(big, chobot) <= 0 and ydist(big, chobot) > -2
- pomb1 = pomb1 or chobot.dir ~= dir_no
- if pomb1 then
- chobot.oci = 1
- end
- switch(chobot.oci){
- [0] = function()
- if random(100) < 5 then
- chobot.oci = 2
- end
- end,
- [2] = function()
- if random(100) < 7 then
- chobot.oci = 0
- end
- end,
- [1] = function()
- if not pomb1 and random(100) < 20 then
- chobot.oci = 0
- end
- end,
- }
- chobot.afaze = chobot.oci + 3 * chobot.chapadla
-
- chobot:updateAnim()
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_vladce()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_xichtik()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_chobot()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-